package main

type ListNode struct {
   Val int
   Next *ListNode
}

// 反转 head 链表，然后返回反转后的新的头节点
func reverseList(head *ListNode) *ListNode {
   // 最小子问题
   if head == nil || head.Next == nil {
      return head
   }
   ret := reverseList(head.Next)
   // 反转两个节点
   head.Next.Next = head
   head.Next = nil
   return ret
}
